<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>函数作业</title>
  </head>
  <body>
    <script>
      //1. 定义函数有几种方式，有什么区别？
      // 函数声明式 function fn(){} 可以在定义前调用
      //函数表达式 var fn=function(){} 不可以 会报错

      //2.return 关键字有那两种作用
      //返回你想返回的值到函数调用的地方
      //中断函数的执行，return后面的所有代码不再执行

      //3.函数实参数和形参个数不等时会发生什么？举例说明
  
      /* function add(a,b){
        console.log(a+b)
      }
      add(4,2,8)//8会丢失，4+2=6

      add(2)//NaN 不给值，形参默认是undefined undefined进行四则得到的是NaN

      */

      //4.请定义一个函数，该函数功能为，传入一个值，返回这个值的平方值;

      function root(num){
        return num*num;
      }
      console.log(root(9));

      //如果你要传入两个值，求的是x的y次方
      function haha(x,y){
        return x**y;
      }
      console.log(haha(3,3))//3*3*3=27

      //5.请写出一个函数，功能为：传入 2 个值，则返回其中的最大值；请再写一个函数，传入 3 个值，返回其中的最大值

      function max2(a,b){
        return (a =a>b?a:b);
      }
      console.log(max2(3,8));

      function max3(a,b,c){
        var max = a>b?a:b;
        return max>c?max:c;
      }
      console.log(max3(2,5,7));


      //6.请定义一个函数，输入一个 N 值，则计算出该值的阶乘，即：`n! = 1*2*3*4*5*6*...`

      function fn(n){
        var sum =1
        for (var i=1;i<=n;i++){
          sum*=i;
        }
        return sum;
      }
      console.log(fn(4))//循环

   
    </script>
  </body>
</html>
